package com.station.Activitys.activity.base;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.view.View;
import android.view.ViewGroup;

import com.afollestad.materialdialogs.MaterialDialog;
import com.github.zackratos.ultimatebar.UltimateBar;
import com.station.Activitys.bean.User;
import com.station.Activitys.utils.ACache;
import com.station.Activitys.utils.DialogUtils;
import com.zhy.autolayout.AutoLayoutActivity;

import org.simple.eventbus.EventBus;

import butterknife.ButterKnife;


/**
 * 项目名称：
 * 类描述：父类公用Activity方法
 * 创建人：张飞祥
 * 创建时间：2018/04/18 下午2:17
 * 修改人：张飞祥
 * 修改时间：2018/04/18 下午2:17
 * 修改备注：
 */
public abstract class BaseActivity extends AutoLayoutActivity implements ActivityCompat.OnRequestPermissionsResultCallback{

    //缓存管理
    protected ACache mACache;
    //网络请求加载进度
    protected MaterialDialog mTimeDialog;
    //信息弹窗 dialog
    protected DialogUtils mMsgDialog;
    //导航栏 & 状态栏 管理者
    protected UltimateBar mMateBar = null;
    //用户实体
    protected User mUser = null;

    //外部调用UI视图方法
    protected abstract void initUI();
    //外部调用数据方法
    protected abstract void initData();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * android每次点击桌面图标应用重启的解决办法，
         * 第一个 activity 的启动模式必须改为 android:launchMode="standard"
         */
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            finish();
            return;
        }

        //TODO 实例化参数配置
        mACache = ACache.get(this);
        initUI();
        initData();
    }

    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);
        this.injectViews();
    }


    public void setContentView(View view, ViewGroup.LayoutParams params) {
        super.setContentView(view, params);
        this.injectViews();
    }


    public void setContentView(View view) {
        super.setContentView(view);
        this.injectViews();
    }


    private void injectViews() {
        ButterKnife.bind(this);
        EventBus.getDefault().register(this);

        //TODO 初始化 设置透明的标题栏与状态栏
        mMateBar = new UltimateBar(this);
        //TODO 沉浸式状态栏
        mMateBar.newImmersionBuilder()
                .build(this)
                .apply();

        //带有颜色 的导航栏
        mMateBar.newColorBuilder()
                .applyNav(true)                 // 是否应用到导航栏
                .navColor(Color.parseColor
                        ("#004ea1"))  // 导航栏颜色
                .build(this)
                .apply();
    }

    @Override
    protected void onDestroy() {
        ButterKnife.unbind(this);
        EventBus.getDefault().unregister(this);
        finish();
        super.onDestroy();
    }


    /**
     * 显示加载dialog
     */
    public void initShowTimeDialog(String content, Activity activity) {

        //加载进度
        mTimeDialog = new MaterialDialog.Builder(activity)
                .content(content)
                .progress(true, 0)
                .show();
        // 设置点击屏幕Dialog不消失
        mTimeDialog.setCanceledOnTouchOutside(false);
        //取消Back键监听
        mTimeDialog.setCancelable(false);
    }
}
